These functions perform a fetch-and-increment operation. The target
on processing element (PE) _p_e is increased by one and the function
returns the previous contents of _t_a_r_g_e_t as an atomic operation.
The arguments are as follows:
_t_a_r_g_e_t The remotely accessible integer data object to be updated on
the remote PE. The type of _t_a_r_g_e_t should match that implied
in the SYNOPSIS section.
_p_e An integer that indicates the PE number on which _t_a_r_g_e_t is
to be updated. If you are using Fortran, it must be a
default integer value.
NNNNOOOOTTTTEEEESSSS
The term _r_e_m_o_t_e_l_y _a_c_c_e_s_s_i_b_l_e is defined in iiiinnnnttttrrrroooo____sssshhhhmmmmeeeemmmm(3).
The fetch-and-increment routines write directly into another PE's
memory without notifying that PE, so the receiving PE should normally
set automatic cache invalidation by use of sssshhhhmmmmeeeemmmm____sssseeeetttt____ccccaaaacccchhhheeee____iiiinnnnvvvv(3) or
sssshhhhmmmmeeeemmmm____sssseeeetttt____ccccaaaacccchhhheeee____lllliiiinnnneeee____iiiinnnnvvvv(3). If this is not done, the receiving PE's
data cache might become incoherent.
You can use the fetch-and-increment routines without setting the
remote write invalidate bit if you know, prior to the call, that the
data at the target addresses are not cachable or are otherwise known
not to reside in the remote processor's cache at the time of the call.
Alternatively, the receiving processor can flush its cache when it
knows that it has received data from another processor. In general,
this requires synchronization. To flush the cache, use
sssshhhhmmmmeeeemmmm____uuuuddddccccfffflllluuuusssshhhh(((()))) or sssshhhhmmmmeeeemmmm____uuuuddddccccfffflllluuuusssshhhh____lllliiiinnnneeee(((()))).
RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEESSSS
The contents that had been at the target address on the remote PE